home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 21 / Cream of the Crop 21 (Terry Blount) (October 1996).iso / utility / rexxalgo.zip / TESTG2J.CMD < prev    next >
OS/2 REXX Batch file  |  1996-07-15  |  3KB  |  109 lines

  1. /* REXX **********************************************/
  2. /*                                                   */
  3. /* Program name: G2J                                 */
  4. /* Function    : translates gregorian date to julian */
  5. /*               date                                */
  6. /* Syntax      : julDate = G2J(yyyy.mm.dd)           */
  7. /* Changes     :                                     */
  8. /*                                                   */
  9. /* Author      : Janosch R. Kowalczyk                */
  10. /*                                                   */
  11. /* Made use of GREED.  09 Jul 1996 / 13:21:56   JRK  */
  12. /*****************************************************/
  13. Parse Arg gregDate
  14.  
  15. If gregDate = '' Then gregDate = '1954.06.16'
  16.  
  17. /*-------------(Exceptions handling )---------------*/
  18. Signal On Failure Name CLEARUP
  19. Signal On Halt Name    CLEARUP
  20. Signal On Syntax Name  CLEARUP
  21.  
  22. If gregDate > '' Then Do
  23.  
  24.   gregDate = TestGreg(gregDate) 
  25.   Say gregDate '--->' G2J(gregDate)
  26.  
  27. End
  28. Else Call HelpText
  29.  
  30. /*-------------------(End program)------------------*/
  31. Exit
  32.  
  33. CLEARUP:
  34. Say 'GREED001E - Break, Failure or Syntax Error'
  35. Exit
  36.  
  37.  
  38. /*================(Test plausibility)===============*/
  39. TestGreg: Procedure
  40. Arg gregDate
  41.  
  42. laenge = Length(gregDate)
  43.  
  44. If laenge = 8 Then Do
  45.   gregDate = '19'||gregDate
  46. End
  47. Else If laenge \= 10 Then Do
  48.   gregDate = Date( 'S' )
  49.   gregDate = Insert( '.', gregDate, 6)
  50.   gregDate = Insert( '.', gregDate, 4)
  51. End
  52.  
  53. Return Translate(gregDate,'.', ' /')
  54.  
  55.  
  56. /*=================(Translate date)=================*/
  57. G2J: Procedure
  58. /*--------------------------------------------------*/
  59. /*                                                  */
  60. /* Procedure name: G2J                              */
  61. /* Function      : translates gregorian date to the */
  62. /*                 julian date                      */
  63. /* Syntax        : julDate = G2J(yyyy.mm.dd)        */
  64. /* Changes       :                                  */
  65. /*                                                  */
  66. /* Author        : Janosch R. Kowalczyk             */
  67. /*                                                  */
  68. /* Made use of GREED.  09 Jul 1996 / 13:21:56   JRK */
  69. /*--------------------------------------------------*/
  70. Arg gregDate
  71.  
  72. year = SubStr(gregDate,1,4)
  73. mon  = SubStr(gregDate,6,2) + 0
  74. day  = SubStr(gregDate,9,2)
  75.  
  76. mon.1  = 0
  77. mon.2  = 31
  78. mon.3  = 59
  79. mon.4  = 90
  80. mon.5  = 120
  81. mon.6  = 151
  82. mon.7  = 181
  83. mon.8  = 212
  84. mon.9  = 243
  85. mon.10 = 273
  86. mon.11 = 304
  87. mon.12 = 334
  88.  
  89. If year // 4 = 0 & year // 400 > 0 & mon > 2 Then leap = 1
  90. Else leap = 0
  91.  
  92. julDay = mon.mon + day + leap
  93.  
  94. Return year'.'julDay
  95.  
  96.  
  97. /*=================(Help texts)=================*/
  98. HelpText: Procedure
  99.  
  100. Say 'Syntax:'                                             
  101. Say                                                       
  102. Say 'G2J gregorian_date'                                     
  103. Say                                                       
  104. Say 'gregorian_date has format: yyyy.mm.dd'    
  105. Say '                       or: yyyy/mm/dd'                                                          
  106. Say '                       or: yyyy mm dd'                                                          
  107.  
  108. Return                                                    
  109.